import { DataTypes } from 'sequelize'
const seq = require('../db/seq')

const UserModels:any = seq.define('user', {
  id: {
    type: DataTypes.BIGINT,
    allowNull: false,
    primaryKey: true
  },
  logname: {
    type: DataTypes.STRING(20),
    allowNull: false
  },
  name: {
    type: DataTypes.STRING(10),
    allowNull: false,
    comment: "用户实名"
  },
  sex: {
    type: DataTypes.STRING(2),
    allowNull: true,
    defaultValue: "男"
  },
  role: {
    type: DataTypes.INTEGER,
    allowNull: false,
    defaultValue: 1,
    comment: "由二进制角色位(D1~D8)构成，未认证用户角色为未定Role=0。角色位为：Role=0    未定(默认)；Role的D1=1    学生位；Role的D2=1    高校教师位；Role的D3=1    企业教师位；Role的D4~D7    (预留)；Role的D8位  系统管理员位。默认系统管理员兼具(D8~D1)，可随意切换角色。用户在不同角色间切换后，其主界面(工作台)也应变换。\\n注意：不要直接修改role值的D1~D7位。在对stu,ent_tea和univ_tea表中数据进行操作时会由相应表的triggers自动维护role值，以保持数据一致。直接对user表中记录的role值D1~D7操作可能会导致数据不一致！！！",
    references: {
      model: 'role',
      key: 'identity'
    }
  },
  password: {
    type: DataTypes.STRING(10),
    allowNull: false
  },
  mobilephone: {
    type: DataTypes.STRING(11),
    allowNull: true
  },
  email: {
    type: DataTypes.STRING(255),
    allowNull: true
  },
  status: {
    type: DataTypes.INTEGER,
    allowNull: false,
    defaultValue: 0,
    comment: "=0(默认),账号正常使用\n=1，账号禁用。\n=2，账号被用户自身注销。\n=3，账号被注明普通删除。\n注：一般情况下，普通删除或注销用户并不清除用户数据，仅仅是将该用户置为无效，用户无法登录。仅系统管理员或院系管理员可以清除用户数据。"
  },
  verified: {
    type: DataTypes.INTEGER,
    allowNull: true,
    defaultValue: 0,
    comment: "=1，用户身份已核实为真实身份，由管理员添加的用户默认为已核实身份。(是否以后允许学生用学生证等自证身份？)\n=0(默认)，暂未核实身份。"
  },
  verifier: {
    type: DataTypes.INTEGER,
    allowNull: false,
    defaultValue: 0
  },
  tokensecretkey: {
    type: DataTypes.STRING(64),
    allowNull: false,
    defaultValue: "ZCEQIUBFKSJBFJH2020BQWE",
    comment: "用户token密钥"
  },
  headimage: {
    type: DataTypes.STRING(255),
    allowNull: true
  },
  creattime: {
    type: DataTypes.DATEONLY,
    allowNull: true
  }
}, {
  tableName: 'user',
  hasTrigger: true,
  timestamps: false,
  indexes: [
    {
      name: "PRIMARY",
      unique: true,
      using: "BTREE",
      fields: [
        { name: "id" },
      ]
    },
    {
      name: "LogName",
      unique: true,
      using: "BTREE",
      fields: [
        { name: "logname" },
        { name: "mobilephone" },
      ]
    },
    {
      name: "role_idx",
      using: "BTREE",
      fields: [
        { name: "role" },
      ]
    },
  ]
});


module.exports = UserModels